- 코드 영역 : 실행할 프로그램의 코드가 저장되는 영역(읽기 전용)
- 데이터 영역 : 전역 변수와 정적(static) 변수가 저장되는 영역. 프로그램 시작 시 할당되고 종료 시 해제된다
- 스택 영역 : 지역 변수, 매개 변수, 함수 호출 정보가 저장되는 영역(ex. main).
- 힙(Heap) 메모리 영역 : 동적으로 메모리를 할당하고 해제할 수 있는 영역(new로 할당). 런타임에 크기가 결정된다. Java에서는 가비지 컬렉터가 힙 영역의 메모리를 관리한다.
public class Example {
static int globalVar = 10; // 데이터 영역
public void method() { // 코드 영역에 메소드의 실행 코드가 저장
int localVar = 20; // 스택 영역
Integer obj = new Integer(30); // 힙 영역
}
public static void main(String[] args) { // 코드 영역에 메소드의 실행 코드가 저장
method(); // method() 호출 시 실행 컨텍스트가 스택에 쌓임
// method()가 종료되면 실행 컨텍스트에서 제거
}
// main이 종료되면 실행 컨텍스트에서 제거
}